package ir.types.datatypes;

import ir.types.Type;

public abstract class DataType extends Type {
    public abstract int getSize();
    public static boolean match(DataType dataType1, DataType dataType2) {
        if (dataType1 instanceof IntegerType && dataType2 instanceof IntegerType) {
            return true;
        }
        if (dataType1 instanceof VoidType && dataType2 instanceof VoidType) {
            return true;
        }
        if (dataType1 instanceof PointerType pointerType1 && dataType2 instanceof PointerType pointerType2) {
            return match(pointerType1.getBaseType(), pointerType2.getBaseType());
        }
        if (dataType1 instanceof ArrayType arrayType1 && dataType2 instanceof ArrayType arrayType2) {
            return match(arrayType1.getBaseType(), arrayType2.getBaseType());
        }
        return false;
    }
}
